﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace YasharEl.Infrastructure.ApplicationModel.Bootstrap.Extensibility
{
    /// <summary>
    /// The extension context factory is responsible to create an <see cref="IExtensionContext"/>
    /// and track the created extension context on the current <see cref="IReportingContext"/>.
    /// </summary>
    public interface IBootstrappingExtensionContextFactory
    {
        /// <summary>
        /// Creates a new <see cref="IExtensionContext"/> and tracks it on
        /// the current <see cref="IReportingContext"/>.
        /// </summary>
        /// <param name="describable">The describable.</param>
        /// <returns>A newly created extension context.</returns>
        IBootstrappingExtensionContext CreateExtensionContext(IDescribable describable);
    }
}
